#ifndef CANDY_H_
#define CANDY_H_
#include "IElementoTablero.h"
#include <string>
#include "Constantes.h"

typedef enum color { BLUE, GREEN, RED, VIOLET, YELLOW, NONE } Color;
//enum {CANDY_MAGICO, CANDY_ESTABLE};

#define CANDY_MAGICO 0
#define CANDY_ESTABLE 1

class Candy: public IElementoTablero {
  public:
    Candy(){};
    Candy(Color color, std::string jsonName);
    ~Candy();

    virtual std::string aString(bool detallado=false);

    /* IElementoTablero */
    virtual bool orientable();
    virtual bool movible();
    virtual bool eliminable();

    std::string getColorAsString();
    virtual std::string getNameAsString()=0;

    void setOrientacion(t_orientacion orientacion);
    t_orientacion getOrientacion();
    std::string getJsonName();
    Color getColor();

    void setEstable();
    void setMagico();
    bool esEstable();

    /* Descripcion: retorna true si el candy aparecio como reemplazo
       luego de aplicar regla. Retorna false en caso contrario  */
    bool esMagico();

  protected:
    Color color;
    std::string jsonName;
    t_orientacion orientacion;
    int estado;
};

#endif
